#include <stdio.h>
#include <string.h>
#include <unistd.h>
#include <sys/types.h>
#include <sys/stat.h>
#include <fcntl.h>


#define ONE (1<<0) // 1
#define TWO (1<<1) // 2
#define THREE (1<<2) // 4
#define FOUR (1<<3) // 8




int main()
{
    close(1);
    int n =  printf("stdin->fd: %d\n", stdin->_fileno);
    printf("stdout->df: %d\n", stdout->_fileno);
    printf("stderr->fd: %d\n", stderr->_fileno);
    
    fprintf(stderr, "stderr->fd: %d\n", n);

    //char buffer[1024];
    //ssize_t s = read(0, buffer, sizeof(buffer));
    //if(s < 0) return 1;
    //buffer[s] = '\0';
    //printf("read buffer: %s\n", buffer);




    //const char* message = "hello Linux!\n";
    //write(1, message, strlen(message));
    //write(2, message, strlen(message));






    //umask(0);
    //int fd = open("log.txt", O_WRONLY|O_CREAT|O_TRUNC, 0666);    
    //printf("fd :%d\n", fd);
    //
    //const char* message = "xxx\n";
    //write(fd, message, strlen(message));
    //int fd1 = open("log1.txt", O_WRONLY|O_CREAT|O_APPEND, 0666);    
    //if(fd1 < 0)
    //{
    //    perror("fd1 open");
    //    return 1;
    //}
    //
    //write(fd1, message, strlen(message));



    //int fd2 = open("log2.txt", O_WRONLY|O_CREAT, 0666);    
    //int fd3 = open("log3.txt", O_WRONLY|O_CREAT, 0666);    
    //int fd4 = open("log4.txt", O_WRONLY|O_CREAT, 0666); 

    //printf("fd1: %d\n", fd1);
    //printf("fd2: %d\n", fd2);
    //printf("fd3: %d\n", fd3);
    //printf("fd4: %d\n", fd4);
    //
    //close(fd);

    return 0;
}




//void show(int flag)
//{
//    if(flag&ONE) printf("function1\n");
//    if(flag&TWO) printf("function2\n");
//    if(flag&THREE) printf("function3\n");
//    if(flag&FOUR) printf("function4\n");
//}
//
//int main()
//{
//    printf("-----------------------------\n");
//    show(ONE);
//    printf("-----------------------------\n");
//    show(ONE|TWO);
//    printf("-----------------------------\n");
//    show(ONE|TWO|THREE);
//    printf("-----------------------------\n");
//    show(THREE|FOUR);
//    printf("-----------------------------\n");
//
//    return 0;
//}


// 当前路径 指的就是进程的当前工作路径
//int main()
//{
//    // 修改当前进程的工作路径，则文件创建的位置改变
//    //chdir("/home/hhb01");
//    //printf("pid: %d\n", getpid());
//    FILE* fp = fopen("log.txt", "w");
//    if(fp == NULL)
//    {
//        perror("fopen");
//        return 1;
//    }
//    
//
//   // const char* message = "hello Linux\n";
//   // fwrite(message, strlen(message), 1, fp);
//    
//    // 向stdout标准输出流中输入，stdout 是默认启动时自动打开的文件
//    const char* message = "hello world";
//    //fwrite(message, strlen(message), 1, stdout);
//   
//
//
//    // 此时写过一次，log.txt文件中已经写入了helloworld
//    //fprintf(fp, "%s", message);
//    fprintf(fp, "%s", "aaa"); // 文件内容被aaa替换
//    fclose(fp);
//    
//    //sleep(100000);
//    return 0;
//}
